package com.hotpot.comm.base;

import java.util.List;
import java.util.Map;

/**
 * 描述:基础Dao(还需在XML文件里，有对应的SQL语句)
 * @author myx
 * @date 2017年7月10日 上午10:53:21
 * @param <T>
 */
public interface BaseMapper<T> {
	/**
	 * 方法描述：保存
	 * @param t
	 * @return: void
	 */
	int save(T t);
	
	/**
	 * 方法描述：保存
	 * @param map
	 * @return: void
	 */
	int save(Map<String, Object> map);
	
	/**
	 * 方法描述：批量保存
	 * @param list
	 * @return: void
	 */
	void saveBatch(List<T> list);
	
	/**
	 * 方法描述：更新
	 * @param t
	 * @return
	 * @return: int
	 */
	int update(T t);
	
	/**
	 * 方法描述：更新
	 * @param map
	 * @return
	 * @return: int
	 */
	int update(Map<String, Object> map);
	
	/**
	 * 方法描述：删除
	 * @param id
	 * @return
	 * @return: int
	 */
	int delete(Object id);
	
	/**
	 * 方法描述：删除
	 * @param map
	 * @return
	 * @return: int
	 */
	int delete(Map<String, Object> map);
	
	/**
	 * 方法描述：批量删除
	 * @param id
	 * @return
	 * @return: int
	 */
	int deleteBatch(Object[] id);

	/**
	 * 方法描述：根据主键查询
	 * @param id
	 * @return
	 * @return: T
	 */
	T queryObject(Object id);
	
	/**
	 * 方法描述：查询
	 * @param map
	 * @return
	 * @return: List<T>
	 */
	List<T> queryList(Map<String, Object> map);
	
	/**
	 * 方法描述：查询
	 * @param t
	 * @return
	 * @return: List<T>
	 */
	List<T> queryList(T t);
	
	/**
	 * 方法描述：查询总数
	 * @param map
	 * @return
	 * @return: int
	 */
	int queryTotal(Map<String, Object> map);
	
	/**
	 * 方法描述：查询总数
	 * @param map
	 * @return
	 * @return: int
	 */
	int queryTotal(T t);
}
